1. Field of the Invention
The present invention relates generally to the generation of inter-processor interrupts in a multi-processor computer system in which each of the processors of the computer system is coupled to a local APIC (advanced programmable interrupt controller). More particularly, the present invention relates to apparatus, and an associated method, for permitting generation of an inter-processor interrupt to be initiated by a peripheral component device, such as a PCI bus controller, not directly connected to any of the local APICs. The interrupt permitted to be initiated by the peripheral component device includes, inter alia, a remote read request.
The peripheral component device is coupled, instead, to an I/O APIC. The I/O APIC, in turn, is coupled via an APIC bus with the local APICs. The peripheral component device requests the I/O APIC to generate a selected inter-processor interrupt upon the APIC bus to effectuate the desired interrupt. Responses to the interrupt are provided to a register of the I/O APIC. The contents of the register are accessible by the peripheral component device.
Operation of an embodiment of the present invention increases the serviceability of a multi-processor computer system. Component devices, such as the PCI bus controller, which otherwise are unable to generate directly inter-processor interrupts, are able to initiate generation of the inter-processor interrupts. A remote read inter-processor interrupt is exemplary of an inter-processor interrupt, the initiation of which is provided through operation of an embodiment of the present invention. Data read from a selected processor responsive to the remote read interrupt is provided to a register of the I/O APIC which can be accessed by the peripheral component device.
2. Description of Related Art
Networks serve the purpose of connecting many different personal computers (PCS), workstations, or terminals to each other, and to one or more host computers, printers, file servers etc., so that expensive computing assets, programs, files and other data may be shared among many users.
In a network utilizing a client/server architecture, the client (personal computer or workstation) is the requesting machine and the server is the supplying machine, both of which may preferably be connected via the network, such as a local area network (LAN), wide area network (WAN) or metropolitan area network (MAN). This is in contrast to early network systems that utilized a mainframe with dedicated terminals.
In a client/server network, the client typically contains a user interface and may perform some or all of the application processing and, as mentioned above, can include personal computers or workstations. The server in a client/server network can be a high-speed microcomputer or minicomputer and in the case of a high-end server can include multiple processors and mass data storage devices such as multiple CD-ROM drives and multiple hard drives, preferably with "redundant array of inexpensive disk" (RAID) protection. An exemplary server such as a database server maintains the databases and processes requests from the client to extract data from or to update the database. An application server provides additional business processing for the clients. The network operating system (NOS) together with the database management system (DBMS) and transaction monitor (TP monitor) are responsible for the integrity and security of the server.
Client/server networks are widely used throughout many different industries and business organizations, especially where mission-critical applications requiring high performance are routinely launched. The mass storage and multi-processing capabilities provided by current client/server network systems (for example, the high-end servers) that run such applications permit a wide range of essential services and functions to be provided through their use.
As can be appreciated, many of these businesses are highly dependent upon the availability of their client/server network systems to permit these essential network services and functions to be carried out. As these client/server network systems become increasingly essential to the everyday operations of these businesses, additional steps need to be taken in the design and construction of the server in the client/server network system to ensure its continuous availability to the clients. That is to say, in the design and construction of a server, steps need to be taken to ensure that the server can be operated with little or no downtime.
It can be appreciated by those skilled in the art that high availability, reliability and serviceability are valuable design aspects in ensuring that a server is a "zero downtime" system that will operate with little or no downtime. The modularity of components within a server has been recognized as an important design consideration in ensuring that the downtime of a server will be minimized. Modules can be removed and examined for operability or other purposes much easier than permanently mounted fixtures within a server chassis. When various components of a server can be provided in a modular form, they can also be readily replaced to maintain the operational status of the server with minimal downtime.
Removable modular components may include disc drives and power supplies. As described above, the removability of modular components allows for better overall serviceability of the computer system which is a distinct advantage. For example, a defective power supply in the server generally requires prompt replacement in order to limit downtime. Modular components and connectors facilitate prompt replacement and are thus popular in many computer designs.
Originally, a rule of practice in the maintenance of modular components or printed circuit boards of a server was that of turning the power to the server off before any modular components or printed circuit boards were removed from or added to the chassis or support frame of the server. Recent innovations have centered around a highly desirable design goal of "hot-pluggability" which addresses the benefits derived from inserting and removing modular components and printed cards from the chassis of the server when the server is electrically connected and operational. It can be readily appreciated that modularization and hot-pluggability can have a significant bearing on the high availability aspect of a high-end server.
Hot-pluggable components may include storage or disc drives, drive cages, fans, power supplies, system I/O boards, control boards, processor boards, and other sub-assemblies. The ability to remove these constituent components without having to power down the server allows for better overall serviceability of the system, which is a distinct advantage to both the user and the maintenance technician.
Component redundancy has also been recognized as an important design consideration in ensuring that a server will operate with little or no downtime. Essentially, component redundancy is typically provided in a system to better ensure that at least one of the redundant components is operable, thereby minimizing the system downtime. With component redundancy, at least two components are provided that can perform the same function, such that if one of the components becomes faulty for some reason, the operation fails over to the redundant component. When at least one of the redundant components is operable, continued operation of the computer system is possible even if others of the redundant components fail. To further enhance reliability and serviceability, redundant components have been made hot-pluggable.
Dynamic reconfiguration of a server system can also be accomplished by providing upgradable modular components therein. As can be readily appreciated, this objective can be accomplished by the addition or substitution of components having different circuits, preferably updated or upgraded, disposed therewithin. When components are redundant and hot-pluggable, reconfiguration of the server is often possible without taking the server offline.
Another important design aspect with respect to providing redundant and hot-pluggable components in a server system is to ensure and maintain a safe working environment while the server is operating and being repaired or upgraded. Accordingly, when the system components are swapped or upgraded, the exposure of hot connectors and contacts must be kept to a minimum. It can be appreciated by those skilled in the art that further developments in this area would significantly enhance the reliability and serviceability aspects of a high-end server system.
To further enhance the serviceability of server systems, additional innovations may be required in the design and construction of diagnostic sub-systems thereof. In existing client/server network systems it is often difficult to obtain in a timely manner important diagnostic data and information corresponding to a component failure in order to facilitate the quick serviceability of the server. Therefore, it can be appreciated that the more information that can be readily provided to locate a defective component or problem with the server, the better is the optimization of the amount of time the server is up and running.
Computer servers, as well as other types of computer systems, are sometimes formed of multiple numbers of processors connected in a manner to permit their operation in parallel. A computer system including such an arrangement is sometimes referred to as a multi-processor computer system. Use of a multi-processor computer system is advantageous as computations to be performed to execute one or more tasks can be performed in parallel. The speed at which a task can be completed can, therefore, generally be increased significantly in contrast to the speed at which the corresponding task can be completed by a single-processor system.
Many conventional computer systems permit the generation of interrupt messages to alert the processor of special conditions, typically those conditions which require priority attention. Generally, an interrupt is an event which indicates that a certain condition somewhere in the computer system requires the attention of the computer system processor to deal with the condition. The action taken by the processor responsive to the interrupt is referred to as "serving" the interrupt.
Provision for the servicing of interrupts becomes more complex in a multi-processor computer system as the interrupt must be directed towards an appropriate one of the processors.
APICs (advanced programmable interrupt controllers) are sometimes used to control the interrupt process. The APICs are coupled together by way of an APIC bus upon which inter-processor interrupts (IPIs) are generated. The Intel Pentium.TM. Pro Family Series includes exemplary APICs. APICs associated with the processors, according to at least one APIC manufacturer, are referred to as local APICs while APICs associated with other, such as input and output, devices are referred to as I/O APICs. The interrupts permitted to be generated by local APICs might include interrupts which are privileged to the local APICs. That is to say, some interrupts are conventionally generated only by local APICs and are not typically generated by I/O APICs.
Devices not coupled to the APIC bus conventionally are unable to generate interrupts or obtain information related to responses to such interrupts. A PCI (peripheral controller interface/interconnect) is exemplary of a device which typically is not directly associated with an APIC and is conventionally unable to cause the generation of interrupts or receive information related to responses thereto.
Even if such a device is able indirectly to cause the generation of inter-processor interrupts, interrupt messages conventionally reserved for local APICs cannot be indirectly initiated by such a device by way of an I/O APIC. A remote read interrupt is exemplary of an interrupt which is conventionally reserved for use by a local APIC, and, therefore, conventionally cannot be initiated, even indirectly, by a device even by way of an I/O APIC.
As information obtained from a remote read interrupt operation would be of advantage in ensuring a high level of serviceability of the computer system, a manner by which a remote read interrupt operation could be initiated would be advantageous.
It is in light of this background information related to the generation of interrupt messages in a multi-processor computer system that the significant improvements of the present invention have evolved.